Computer systems have become a virtual necessity for the operation of any relatively large organization. For financial, membership or even asset information, there is no other device capable of tracking the activities of geographically diverse organizational operations administered by different people, possibly using different languages.
A computer system used by an organization will typically be provided with a number of databases to administer and track organizational activities. For example, one database may be provided for financial information (e.g., accounts receivable, accounts payable, etc.), another database may be provided to track progress towards organizational objectives (e.g., manufactured product, raw materials, etc.) and still another database may be provided to track organization membership (e.g., human resources, etc.). Consequently, organizations today require multi-tiered applications to manage the different tasks the organization needs to perform.
The most common solution for deploying a multi-tiered server-side product is to build what is typically referred to as an “application installer.” The application installers are customer installer applications that install products on top of machines that are typically set up by the IT departments of the organizations. However, the use of application installers in the industry often lead to unpredictable results when using the installed products. Because all organizations have systems with different IT security, network and machine setup standards, and generally different systems than the software developer, it is common that software products developed by a company and successfully tested in-house do not properly function once they are deployed at a customer site.
An additional problem is that traditional multi-tiered application installers that run on multiple machines ask for deployment information on each and every machine on which the software is installed. Repeatedly asking for the same information is often very error-prone, and can lead to mis-configured deployments if consistent information is not entered.
One solution to these problems is to deliver applications to a customer pre-installed on a Virtual Appliance (VA). A Virtual Appliance is a virtual computer that has a multi-tiered application installed and configured on it. A virtual appliance differs from an application installer in that it is provided with its own operating system environment. A single multi-tiered application may be deployed in one or more VAs. A single physical machine may host one or more VAs. The idea behind delivering a product installed on a VA is that a customer will be running the application in an environment that is exactly the same as the environment in which the product was tested. Eliminating these environmental differences should eliminate problems that are specific to an environment in which the product was tested.
However, creating VAs is complicated, time-consuming and involves many steps. With the short timeframe companies have for development of multi-tiered applications in today's industry, there exists a need in the art for a way to automate the production of production-quality VAs.